package com.gscitysfy.cus.drain.modules.inspection.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.gscitysfy.cus.drain.modules.inspection.vo.LngLatVo;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * @author Administrator
 * @since 2022-10-14 15:00:46
 */
@Getter
@Setter
@TableName("drain_inspection_mn_job")
public class DrainInspectionMnJob implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId
    private Long cmKid;

    /**
     * 巡检计划ID
     */
    private Long cmPlanId;

    /**
     * 计划依据
     */
    private String cmPlanBasis;

    /**
     * 计划类型
     */
    private String cmPlanType;

    /**
     * 计划频次
     */
    private String cmPlanFrequency;

    /**
     * 计划对象类型
     */
    private String cmPlanObjectType;

    /**
     * 计划负责人名称
     */
    private String cmPlanHeaderName;

    /**
     * 计划编号
     */
    private String cmPlanNo;

    /**
     * 计划执行人，空格分隔
     */
    private String cmPlanExecutorName;

    /**
     * 计划开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmPlanStartDate;

    /**
     * 计划结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmPlanEndDate;

    /**
     * 任务编号
     */
    private String cmJobNo;

    /**
     * 任务状态 0表示待巡检已接收，1表示待巡检未接收，2表示巡检进行中，3表示已巡检
     */
    private Integer cmJobStatus;

    /**
     * 任务计划开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmJobStartDate;

    /**
     * 任务计划结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmJobEndDate;

    /**
     * 任务实际开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmJobActualStartDate;

    /**
     * 任务实际结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date cmJobActualEndDate;

    /**
     * 是否暂停
     */
    private Integer cmJobIsStop;

    /**
     * 计划名称
     */
    private String cmPlanName;

    @TableField(fill = FieldFill.INSERT)
    private String cmCreator;

    @TableField(fill = FieldFill.UPDATE)
    private String cmModifier;

    private String cmOrgflag;

    private Long cmRegflag;

    private String cmTenantid;

    @TableField(fill = FieldFill.INSERT)
    private Date cmAddtime;

    @TableField(fill = FieldFill.UPDATE)
    private Date cmUptime;

    private Long cmVersion;

    @TableField(fill = FieldFill.INSERT)
    private Boolean cmUsable;

    private Long cmJobCondition;

    @TableField(exist = false)
    private String status;

    private String cmPlanHeaderPhone;


    /**
     * 计划巡检区域点集合
     */
    @TableField(exist = false)
    private String cmPlanAreaPoints;


    /**
     * 区域点位集合
     */
    @TableField(exist = false)
    private List<DrainInspectionRlPoint> areaPoints;

    /**
     * 巡检对象单位集合
     */
    @TableField(exist = false)
    private List<DrainInspectionRlPoint> objectPoints;


    @TableField(exist = false)
    private  List<DrainInspectionMnProblem>  drainInspectionMnProblems;


    @TableField(exist = false)
    private List<DrainInspectionRlTrack> drainInspectionRlTracks;


    @TableField(exist = false)
    private List jwd;

    private String   cmStartLng;

    private String    cmStartLat;

    private String   cmStopLng;

    private String    cmStopLat;

    /**
     * 计划分类 0表示巡检计划 1表示养护计划，2表示检查计划
     */
    private Integer cmPlanCategory;
}
